home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / util / conv / CarriageRet.lha / CarriageRet / AmigavisionsLib / GetCommand.a < prev    next >
Text File  |  1999-01-03  |  2KB  |  92 lines

  1. ********************************************************************************
  2. *
  3. *    Program:    Get Command
  4. *    Filename:    GetCommand.a
  5. *
  6. *    Contents:    Der durch a0.l (Adresse) angegebene
  7. *            String wird nach einem Kommando, der in der Tabelle
  8. *            (durch a1.l angegeben) steht durchsucht. Die Nummer
  9. *            des Kommandos wird in d0.l übergeben (0= kein Kommando
  10. *            gefunden). Die Tabelle hat folgenen Aufbau:
  11. *            'CommandoString_1',0,'CommandoString_2',0...
  12. *            'CommandoString_n',0,0
  13. *            Groß/Kleinschrift wird ignoriert.
  14. *            Im Commandostring dürfen auch Jocker verwendet werden
  15. *            wie ? und *. Diese haben folgende Bedeutung:
  16. *            * - ZEICHEN an dieser Stelle wird nicht berücksichtigt.
  17. *            ? - ZIFFER (0-9,a-f) an dieser Stelle wird erwartet.
  18. *            a0.l enthält die neue Startadresse und d1.l die neue
  19. *            Länge des Strings.
  20. *            Bei Fehler keine Änderung der Startadresse.
  21. *
  22. *    Language:    68000 Assembler
  23. *
  24. *    Author:        Johannes R. Geiss
  25. *
  26. *    Copyright:    Amigavisions
  27. *
  28. *    History:    $HISTORY:
  29. *            2.1 (26-Oct-91) changed JRG
  30. *            2.0 (14-Oct-91) changed JRG
  31. *            1.1 (10-Oct-91) changed JRG
  32. *            1.0 (03-Oct-91) written JRG
  33. *
  34. *    Version:    $VER: GetCommand.a 2.1 (26-Oct-91)
  35. *
  36. ********************************************************************************
  37.  
  38.  
  39. *------ Exports
  40.     xdef    GetCommand
  41.  
  42.  
  43. ********************************************************************************
  44.  
  45.     SECTION GetCommand
  46.  
  47. *------ Get Argument procedure
  48. *
  49. * Input: a0.l Zeiger auf String
  50. *     a1.l Zeiger auf CommandoTabelle
  51. *
  52. * Output: d0.l CommandNummer (0= Fehler)
  53.  
  54. GetCommand
  55.     movem.l d2-d3/a2,-(a7)
  56.     moveq.l #1,d0            ; suche command
  57. Loop1    move.l    a0,a2            ; merke Stringadr
  58. Loop2    move.b    (a1)+,d2        ; CommandZeichen holen
  59.     beq.s    Ende            ; Command zu ende (=gefunden)
  60.     ori.b    #$20,d2            ; not case sensitive
  61.     move.b    (a2)+,d3        ; hole StringZeichen
  62.     ori.b    #$20,d3
  63.     cmpi.b    #'*',d2            ; Command = * ?
  64.     bne.s    Cont7
  65.     cmpi.b    #$61,d3            ; ja
  66.     bcs.s    Cont6
  67.     cmpi.b    #$7b,d3
  68.     bcs.s    Loop2
  69. Cont7    cmpi.b    #'?',d2            ; Command = ? ?
  70.     bne.s    Cont5
  71.     cmpi.b    #$30,d3            ; ja
  72.     bcs.s    Cont6
  73.     cmpi.b    #$3a,d3
  74.     bcs.s    Loop2
  75.     cmpi.b    #$61,d3
  76.     bcs.s    Cont6
  77.     cmpi.b    #$67,d3
  78.     bcs.s    Loop2
  79. Cont5    cmp.b    d3,d2            ; vergleiche Zeichen
  80.     beq.s    Loop2            ; gleich
  81. Cont6    addq.w    #1,d0            ; CommandNummer +1
  82. Loop4    tst.b    (a1)+            ; bis zum Ende des Commands gehen
  83.     bne.s    Loop4
  84.     tst.b    (a1)            ; letztes Command
  85.     bne.s    Loop1            ; nein
  86.     moveq.l #0,d0            ; nichts gefunden
  87.     bra.s    Out
  88. Ende    move.l    a2,a0            ; end
  89. Out    movem.l (a7)+,d2-d3/a2
  90.     rts
  91.     END
  92.